'\" t
.\"     Title: makepkg.conf
.\"    Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 2022-11-21
.\"    Manual: Pacman Manual
.\"    Source: Pacman 6.0.2
.\"  Language: English
.\"
.TH "MAKEPKG\&.CONF" "5" "2022\-11\-21" "Pacman 6\&.0\&.2" "Pacman Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
makepkg.conf \- makepkg configuration file
.SH "SYNOPSIS"
.sp
/etc/makepkg\&.conf, $XDG_CONFIG_HOME/pacman/makepkg\&.conf, ~/\&.makepkg\&.conf
.SH "DESCRIPTION"
.sp
Configuration options for makepkg are stored in makepkg\&.conf\&. This file is sourced so you can include any special compiler flags you wish to use\&. This is helpful when building for different architectures or with different optimizations\&. However, only the variables described below are exported to the build environment\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
This does not guarantee that all package Makefiles will use your exported variables\&. Some of them are non\-standard\&.
.sp .5v
.RE
.sp
The system\-wide configuration file is found in /etc/makepkg\&.conf\&. Individual options can be overridden (or added to) on a per\-user basis in $XDG_CONFIG_HOME/pacman/makepkg\&.conf or ~/\&.makepkg\&.conf, with the former taking priority\&.
.sp
The default file is fairly well commented, so it may be easiest to simply follow directions given there for customization\&.
.SH "OPTIONS"
.PP
\fBDLAGENTS=(\fR\*(Aqprotocol::/path/to/command [options]\*(Aq \&...\fB)\fR
.RS 4
Sets the download agents used to fetch source files specified with a URL in the
\fBPKGBUILD\fR(5)
file\&. Options can be specified for each command as well, and any protocol can have a download agent\&. Any spaces in option arguments are required to be escaped to avoid being split\&. Several examples are provided in the default makepkg\&.conf\&.

If present,
%u
will be replaced with the download URL\&. Otherwise, the download URL will be placed on the end of the command\&. If present,
%o
will be replaced with the local file name, plus a \(lq\&.part\(rq extension, which allows makepkg to handle resuming file downloads\&.
.RE
.PP
\fBVCSCLIENTS=(\fR\*(Aqprotocol::package\*(Aq \&...\fB)\fR
.RS 4
Sets the packages required to fetch version controlled source files\&. When required, makepkg will check that these packages are installed or are included in the
depends
or
makedepends
arrays in the PKGBUILD\&.
.RE
.PP
\fBCARCH=\fR"carch"
.RS 4
Specifies your computer architecture; possible values include such things as \(lqi686\(rq, \(lqx86_64\(rq, \(lqppc\(rq, etc\&. This should be automatically set on installation\&.
.RE
.PP
\fBCHOST=\fR"chost"
.RS 4
A string such as \(lqi686\-pc\-linux\-gnu\(rq; do not touch this unless you know what you are doing\&. This can be commented out by most users if desired\&.
.RE
.PP
\fBCPPFLAGS=\fR"cppflags"
.RS 4
Flags used for the C preprocessor; see CFLAGS for more information\&.
.RE
.PP
\fBCFLAGS=\fR"cflags"
.RS 4
Flags used for the C compiler\&. This is a key part to the use of makepkg\&. Usually several options are specified, and the most common string resembles something like this: \(lq\-march=i686 \-O2 \-pipe\(rq\&. Another useful option may be
\-mcpu
in place of
\-march\&. Read gcc(1) for more details on the wide variety of compiler flags available\&.
.RE
.PP
\fBCXXFLAGS=\fR"cxxflags"
.RS 4
Flags used for the C++ compiler; see CFLAGS for more info\&.
.RE
.PP
\fBRUSTFLAGS=\fR"rustflags"
.RS 4
Flags used for the Rust compiler, similar in spirit to CFLAGS\&. Read
\fBrustc\fR(1)
for more details on the available flags\&.
.RE
.PP
\fBLDFLAGS=\fR"ldflags"
.RS 4
Flags used for the linker\&. Several options may be specified with common usage resembling \(lq\-Wl,\-\-hash\-style=gnu\(rq\&. Read ld(1) for more details on available linker flags\&.
.RE
.PP
\fBLTOFLAGS=\fR"ltoflags"
.RS 4
Additional compiler and linker flags appended to
CFLAGS,
CXXFLAGS
and
LDFLAGS
when building with link time optimization\&. If empty, \(lq\-flto\(rq is used\&.
.RE
.PP
\fBMAKEFLAGS=\fR"makeflags"
.RS 4
This is often used to set the number of jobs used; for example,
\-j2\&. Other flags that make accepts can also be passed\&.
.RE
.PP
\fBDEBUG_CFLAGS=\fR"debug_cflags"
.RS 4
Additional compiler flags appended to
CFLAGS
for use in debugging\&. Usually this would include: \(lq\-g\(rq\&. Read gcc(1) for more details on the wide variety of compiler flags available\&.
.RE
.PP
\fBDEBUG_CXXFLAGS=\fR"debug_cxxflags"
.RS 4
Debug flags used for the C++ compiler; see DEBUG_CFLAGS for more info\&.
.RE
.PP
\fBDEBUG_RUSTFLAGS=\fR"debug_rustflags"
.RS 4
Additional compiler flags appended to
RUSTFLAGS
for use in debugging\&. Usually this would include: \(lq\-C debuginfo=2\(rq\&. Read
\fBrustc\fR(1)
for more details on the available flags\&.
.RE
.PP
\fBBUILDENV=(\fR!distcc !color !ccache check !sign\fB)\fR
.RS 4
This array contains options that affect the build environment; the defaults are shown here\&. All options should always be left in the array; to enable or disable an option, simply remove or add an \(lq!\(rq at the front of the option\&. If an option is specified multiple times, the final value takes precedence\&. Each option works as follows:
.PP
\fBdistcc\fR
.RS 4
Use the distributed C/C++/ObjC compiler to spread compilation among multiple machines\&. If this is enabled,
DISTCC_HOSTS
must be specified as well\&.
.RE
.PP
\fBcolor\fR
.RS 4
Colorize output messages, making output easier to read\&.
.RE
.PP
\fBccache\fR
.RS 4
Use ccache to cache compilation by default\&. This allows for faster compiles if you are continuously recompiling the same packages\&. It can be disabled for individual packages by placing
!ccache
in the PKGBUILD options array\&.
.RE
.PP
\fBcheck\fR
.RS 4
Run the check() function if present in the PKGBUILD\&. This can be enabled or disabled for individual packages through the use of makepkg\(cqs
\fI\-\-check\fR
and
\fI\-\-nocheck\fR
options, respectively\&.
.RE
.PP
\fBsign\fR
.RS 4
Generate a PGP signature file using GnuPG\&. This will execute
\fIgpg \-\-detach\-sign \-\-use\-agent\fR
on the built package to generate a detached signature file, using the GPG agent, if it is available\&. The signature file will be the entire file name of the package with a \(lq\&.sig\(rq extension\&.
.RE
.RE
.PP
\fBDISTCC_HOSTS=\fR"host1 \&..."
.RS 4
If using DistCC, this is used to specify a space\-delimited list of hosts running in the DistCC cluster\&. In addition, you will want to modify your
MAKEFLAGS\&.
.RE
.PP
\fBBUILDDIR=\fR"/path/to/directory"
.RS 4
If this value is not set, packages will, by default, be built in subdirectories of the directory that makepkg is called from\&. This option allows setting the build location to another directory\&. Incorrect use of
$startdir
in a PKGBUILD may cause building with this option to fail\&.
.RE
.PP
\fBGPGKEY=\fR""
.RS 4
Specify a key to use for GPG signing instead of the default key in the keyring\&. Can be overridden with makepkg\(cqs
\fI\-\-key\fR
option\&.
.RE
.PP
\fBOPTIONS=(\fR!strip docs libtool staticlibs emptydirs !zipman !purge !debug\fB)\fR
.RS 4
This array contains options that affect default packaging\&. They are equivalent to options that can be placed in the PKGBUILD; the defaults are shown here\&. All options should always be left in the array; to enable or disable an option, simply remove or add an \(lq!\(rq at the front of the option\&. If an option is specified multiple times, the final value takes precedence\&. Each option works as follows:
.PP
\fBstrip\fR
.RS 4
Strip symbols from binaries and libraries\&. If you frequently use a debugger on programs or libraries, it may be helpful to disable this option\&.
.RE
.PP
\fBdocs\fR
.RS 4
Save doc directories\&. If you wish to delete doc directories, specify
!docs
in the array\&. The directories affected are specified by the
DOC_DIRS
variable\&.
.RE
.PP
\fBlibtool\fR
.RS 4
Leave libtool (\&.la) files in packages\&. Specify
!libtool
to remove them\&.
.RE
.PP
\fBstaticlibs\fR
.RS 4
Leave static library (\&.a) files in packages\&. Specify
!staticlibs
to remove them, if they have a shared counterpart\&.
.RE
.PP
\fBemptydirs\fR
.RS 4
Leave empty directories in packages\&.
.RE
.PP
\fBzipman\fR
.RS 4
Compress manual (man and info) pages with gzip\&. The directories affected are specified by the
MAN_DIRS
variable\&.
.RE
.PP
\fBpurge\fR
.RS 4
Remove files specified by the
PURGE_TARGETS
variable from the package\&.
.RE
.PP
\fBdebug\fR
.RS 4
Add the user\-specified debug flags as specified in DEBUG_CFLAGS and DEBUG_CXXFLAGS to their counterpart buildflags\&. Creates a separate package containing the debug symbols when used with \(oqstrip\(cq\&.
.RE
.PP
\fBlto\fR
.RS 4
Enable building packages using link time optimization\&. Adds the flags specified in LTOFLAGS to CFLAGS, CXXFLAGS and LDFLAGS (or \(lq\-flto\(rq if LTOFLAGS is empty)\&.
.RE
.RE
.PP
\fBINTEGRITY_CHECK=(\fRcheck1 \&...\fB)\fR
.RS 4
File integrity checks to use\&. Multiple checks may be specified; this affects both generation and checking\&. The current valid options are:
ck,
md5,
sha1,
sha224,
sha256,
sha384,
sha512, and
b2\&.
.RE
.PP
\fBSTRIP_BINARIES=\fR"\-\-strip\-all"
.RS 4
Options to be used when stripping binaries\&. See
\fBstrip\fR(1)
for details\&.
.RE
.PP
\fBSTRIP_SHARED=\fR"\-\-strip\-unneeded"
.RS 4
Options to be used when stripping shared libraries or PIE executables\&. See
\fBstrip\fR(1)
for details\&.
.RE
.PP
\fBSTRIP_STATIC=\fR"\-\-strip\-debug"
.RS 4
Options to be used when stripping static libraries\&. See
\fBstrip\fR(1)
for details\&.
.RE
.PP
\fBMAN_DIRS=(\fR{usr{,/local}{,/share},opt/*}/{man,info} \&...\fB)\fR
.RS 4
If
zipman
is specified in the
OPTIONS
array, this variable will instruct makepkg where to look to compress manual (man and info) pages\&. If you build packages that are located in opt/, you may need to add the directory to this array\&.
\fBNOTE:\fR
Do not add the leading slash to the directory name\&.
.RE
.PP
\fBDOC_DIRS=(\fRusr/{,share/}{doc,gtk\-doc} \&...\fB)\fR
.RS 4
If
!docs
is specified in the
OPTIONS
array, this variable will instruct makepkg where to look to remove docs\&. If you build packages that are located in opt/, you may need to add the directory to this array\&.
\fBNOTE:\fR
Do not add the leading slash to the directory name\&.
.RE
.PP
\fBPURGE_TARGETS=(\fRusr/{,share}/info/dir \&.podlist *\&.pod\&...\fB)\fR
.RS 4
If
purge
is specified in the
OPTIONS
array, this variable will instruct makepkg which files to remove from the package\&. This is useful for index files that are added by multiple packages\&.
.RE
.PP
\fBDBGSRCDIR=\fR"/usr/src/debug"
.RS 4
If
strip
and
debug
are specified in the
OPTIONS
array, this variable will instruct makepkg where to place source files for installed binaries\&. The binaries will be modified to link this directory for the debugger search path\&.
.RE
.PP
\fBPKGDEST=\fR"/path/to/directory"
.RS 4
If this value is not set, packages will, by default, be placed in the current directory (location of the
\fBPKGBUILD\fR(5))\&. Many people like to keep all their packages in one place so this option allows for this behavior\&. A common location is \(lq/home/packages\(rq\&.
.RE
.PP
\fBSRCDEST=\fR"/path/to/directory"
.RS 4
If this value is not set, downloaded source files will only be stored in the current directory\&. Many people like to keep all source files in a central location for easy cleanup, so this path can be set here\&.
.RE
.PP
\fBSRCPKGDEST=\fR"/path/to/directory"
.RS 4
If this value is not set, source package files will be stored in in the current directory\&. Many people like to keep all source package files in a central location for easy cleanup, so this path can be set here\&.
.RE
.PP
\fBLOGDEST=\fR"/path/to/directory"
.RS 4
If this value is not set, log files are written to the current directory\&. This centralizes the log location, facilitating cleanup and compression\&.
.RE
.PP
\fBPACKAGER=\fR"John Doe <john@example\&.com>"
.RS 4
This value is used when querying a package to see who was the builder\&. The given format is required for PGP key lookup through WKD\&. It is recommended to change this to your name and email address\&.
.RE
.PP
\fBCOMPRESSGZ=\fR"(gzip \-c \-f \-n)", \fBCOMPRESSBZ2=\fR"(bzip2 \-c \-f)", \fBCOMPRESSXZ=\fR"(xz \-c \-z \-)", \fBCOMPRESSZST=\fR"(zstd \-c \-z \-)", \fBCOMPRESSLZO\fR"(lzop \-q)", \fBCOMPRESSLRZ=\fR"(lrzip \-q)", \fBCOMPRESSLZ4=\fR"(lz4 \-q)", \fBCOMPRESSZ=\fR"(compress \-c \-f)", \fBCOMPRESSLZ=\fR"(lzip \-c \-f)"
.RS 4
Sets the command and options used when compressing compiled or source packages in the named format\&.
.RE
.PP
\fBPKGEXT=\fR"\&.pkg\&.tar\&.gz", \fBSRCEXT=\fR"\&.src\&.tar\&.gz"
.RS 4
Sets the compression used when making compiled or source packages\&. Valid suffixes are
\&.tar\&.gz,
\&.tar\&.bz2,
\&.tar\&.xz,
\&.tar\&.zst,
\&.tar\&.lzo,
\&.tar\&.lrz,
\&.tar\&.lz4,
\&.tar\&.lz
and
\&.tar\&.Z, or simply
\&.tar
to disable compression entirely\&.
.RE
.PP
\fBPACMAN_AUTH=()\fR
.RS 4
Specify a command prefix for running pacman as root\&. If unset, makepkg will check for the presence of sudo(8) and su(1) in turn, and try the first one it finds\&.

If present,
%c
will be replaced with the shell\-quoted form of the command to run\&. Otherwise, the command to run is appended to the auth command\&.
.RE
.SH "SEE ALSO"
.sp
\fBmakepkg\fR(8), \fBpacman\fR(8), \fBPKGBUILD\fR(5)
.sp
See the pacman website at https://archlinux\&.org/pacman/ for current information on pacman and its related tools\&.
.SH "BUGS"
.sp
Bugs? You must be kidding; there are no bugs in this software\&. But if we happen to be wrong, submit a bug report with as much detail as possible at the Arch Linux Bug Tracker in the Pacman section\&.
.SH "AUTHORS"
.sp
Current maintainers:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Allan McRae <allan@archlinux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Andrew Gregory <andrew\&.gregory\&.8@gmail\&.com>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Eli Schwartz <eschwartz@archlinux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Morgan Adamiec <morganamilo@archlinux\&.org>
.RE
.sp
Past major contributors:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Judd Vinet <jvinet@zeroflux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Aurelien Foret <aurelien@archlinux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Aaron Griffin <aaron@archlinux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Dan McGee <dan@archlinux\&.org>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Xavier Chantry <shiningxc@gmail\&.com>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Nagy Gabor <ngaba@bibl\&.u\-szeged\&.hu>
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Dave Reisner <dreisner@archlinux\&.org>
.RE
.sp
For additional contributors, use git shortlog \-s on the pacman\&.git repository\&.
